package it.unipg.bipod.dataModel;

import java.util.*;

public class DatiVerbale {
	private Vector<CorsoInsegnamento> corsi;
	
	public DatiVerbale() {
		this.corsi = new Vector<CorsoInsegnamento>();
	}
	
	public CorsoInsegnamento addCorso(Corso corso) {
		CorsoInsegnamento ci = new CorsoInsegnamento(corso);
		corsi.add(ci);
		return ci;
	}
	
	public CorsoInsegnamento[] getCorsi() {
		CorsoInsegnamento[] corsi = new CorsoInsegnamento[this.corsi.size()];
		this.corsi.toArray(corsi);
		return corsi;
	}
	
	public class CorsoInsegnamento {
		private Corso corso;
		private Vector<InsegnamentoDocenti> insegnamenti;
		
		public CorsoInsegnamento(Corso corso) {
			this.corso = corso;
			
			this.insegnamenti = new Vector<InsegnamentoDocenti>();
		}
		
		public InsegnamentoDocenti addInsegnamento(Insegnamento insegnamento) {
			InsegnamentoDocenti id = new InsegnamentoDocenti(insegnamento);
			insegnamenti.add(id);
			return id;
		}
		
		public Corso getCorso() {
			return corso;
		}
		
		public InsegnamentoDocenti[] getInsegnamenti() {
			InsegnamentoDocenti[] insegnamenti = new InsegnamentoDocenti[this.insegnamenti.size()];
			this.insegnamenti.toArray(insegnamenti);
			return insegnamenti;
		}
	}
	
	public class InsegnamentoDocenti {
		private Insegnamento insegnamento;
		private Vector<Docente> richiedenti;
		private Docente assegnatario;
		
		public InsegnamentoDocenti(Insegnamento insegnamento) {
			this.insegnamento = insegnamento;
			
			this.richiedenti = new Vector<Docente>();
			this.assegnatario = null;
		}
		
		public void addRichiedente(Docente richiedente) {
			richiedenti.add(richiedente);
		}
		
		public void setAssegnatario(Docente assegnatario) {
			this.assegnatario = assegnatario;
		}
		
		public Insegnamento getInsegnamento() {
			return insegnamento;
		}
		
		public Docente getAssegnatario() {
			return assegnatario;
		}
		
		public Docente[] getRichiedenti() {
			Docente[] docenti = new Docente[richiedenti.size()];
			richiedenti.toArray(docenti);
			return docenti;
		}
	}
}
